//config的设置是全局的
layui.config({
    base: '/js/plugins/' // 自定义扩展插件所在的目录
}).extend({ //设定模块别名
    yjslayer: 'yjslayer',
    yjsloading: 'yjsloading',
});

layui.use(['yjslayer', 'yjsloading', 'table','form'], function () {
    var $ = layui.jquery
        , yjslayer = layui.yjslayer
        , yjsloading = layui.yjsloading
        , form = layui.form
        , table = layui.table;

    // 获取csrf-token
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

    // 数据表格方法级渲染
    var tbObj = table.render({
        elem: '#dataBody' // 绑定元素
        , id: 'dailyUseList' // 唯一ID
        , height: 'full-20' //高度最大化减去差值
        , url: '/dailyuse/index' // 接口地址 默认会自动传递两个参数：?page=1&limit=30
        , method: 'post' // 接口请求方法
        , page: true
        , skin: 'row' //行边框风格
        , even: true //开启隔行背景
        , limits: [10, 30, 60, 90, 150]
        , limit: 10 //默认采用30
        , cols: [[
            {checkbox: true, fixed: true}
            , {field: 'name', title: '<i class="layui-icon">&#xe605;</i> 生活用品名称', width: 170,edit:'text',fixed: true}
            , {field: 'remark', title: '<i class="layui-icon">&#xe605;</i> 用品备注', width: 150,edit:'text'}
            , {field: 'count', title: '<i class="layui-icon">&#xe605;</i> 人均用品数量', width: 150,edit:'text'}
            , {field: 'unit', title: '<i class="layui-icon">&#xe605;</i> 数量单位', width: 120,edit:'text'}
            , {field: 'sex_limit', title: '<i class="layui-icon">&#xe605;</i> 性别限制', width: 150,event: 'setDailyUseSexLimit', style: 'cursor: pointer;'}
            , {field: 'updated_at', title: '修改时间', sort: true, width: 165}
            , {field: 'created_at', title: '创建时间', sort: true, width: 165}
            , {title: '操作', width: 150, fixed: 'right', align: 'center', toolbar: '#groupBtn'}
        ]]
        , done: function (res, curr, count) {
            //如果是异步请求数据方式，res即为你接口返回的信息。
            //如果是直接赋值的方式，res即为：{data: [], count: 99} data为当前页数据、count为数据总长度
        }
    });

    // 事件处理
    var eventHandle = {
        // 导入
        importDailyUses: function (obj) {
            var importUrl = '/dailyuse/import?view=' + obj;
            layer.open({
                type: 2
                , id: 'dailyuse' + obj // 只允许弹出一个
                , title: '导入生活用品数据'
                , area: ['500px', '400px']
                , shade: 0
                , maxmin: true
                , content: importUrl
                , btn: ['确认', '取消']
                , zIndex: layer.zIndex // 当前窗体层叠顺序(layui自动维护)
                , success: function (layero, index) { // 弹出成功回调
                    // 置顶当前窗体
                    layer.setTop(layero);
                }
                , yes: function (index, layero) { // 确定按钮回调
                    // 获取当前索引iframe页<form>元素对象
                    var form = layer.getChildFrame('[name="excelForm"]', index);
                    // 获取当前form下隐藏submit按钮对象
                    var btnHidden = form.find('#toolbarSubmit')[0];
                    // 向服务端post新增数据
                    btnHidden.click();
                }
                , btn2: function (index, layero) { // 取消按钮回调
                    $title = '导入生活用品数据';
                    $msg = '您确定取消本次数据导入操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , cancel: function (index, layero) { // 关闭窗体成功回调
                    $title = '导入生活用品数据';
                    $msg = '您确定取消本次数据导入操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , end: function () {
                    // 表格刷新
                    tbObj.reload();
                }
            });
        },
        // 导出
        exportDailyUses: function (obj) {
            $title = '生活用品数据数据导出';
            $msg = '您确定执行本次数据导出操作吗？';
            $url = '/export/dailyuses';
            yjsloading.exportConfirm($title, $msg, $url);
        },

        //打印
        printDailyUses: function (obj) {
            $title = '生活用品数据打印';
            $msg = '您确定执行本次数据导出操作吗？';
            $url = '/print/dailyuses';
            yjsloading.exportConfirm($title, $msg, $url);
        },
        //下载模版
        downDailyUses: function (obj) {
            $title = '生活用品数据导出';
            $msg = '您确定执行本次数据导出操作吗？';
            $url = '/down/dailyuses';
            yjsloading.exportConfirm($title, $msg, $url);
        },

        // 新增（单条）
        addData: function (obj) {
            var addUrl = '/dailyuse/item?view=' + obj;
            layer.open({
                type: 2
                , id: obj // 只允许弹出一个
                , title: '新增生活用品'
                , area: ['500px', '400px']
                , shade: 0
                , maxmin: true
                , content: addUrl
                , btn: ['确认', '取消']
                , zIndex: layer.zIndex // 当前窗体层叠顺序(layui自动维护)
                , success: function (layero, index) { // 弹出成功回调
                    // 置顶当前窗体
                    layer.setTop(layero);
                }
                , yes: function (index, layero) { // 确定按钮回调
                    // 获取当前索引iframe页<form>元素对象
                    var form = layer.getChildFrame('[name="dailyUseItemForm"]', index);
                    // 获取当前form下隐藏submit按钮对象
                    var btnHidden = form.find('#toolbarSubmit')[0];
                    // 向服务端post新增数据
                    btnHidden.click();
                }
                , btn2: function (index, layero) { // 取消按钮回调
                    $title = '新增生活用品';
                    $msg = '您确定取消本次数据新增操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , cancel: function (index, layero) { // 关闭窗体成功回调
                    $title = '新增生活用品';
                    $msg = '您确定取消本次数据新增操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , end: function () {
                    // 表格刷新
                    tbObj.reload();
                }
            });
        },
        // 删除（批量）
        deleteBatchData: function (obj) {
            var checkStatus = table.checkStatus('dailyUseList')
                , data = checkStatus.data;
            if (checkStatus.data.length === 0) {
                yjslayer.failMsg('请选择需删除的生活用品数据！');
            } else {
                var ids = [];
                var arrival_codes = [];
                for (var i = 0; i < data.length; i++) {
                    ids[i] = data[i].code;
                    arrival_codes[i] = data[i].arrival_code;
                }
                var title = '生活用品信息维护';
                var msg = '您确定执行本次数据批量删除操作吗？';
                var deleteUrl = '/dailyuse/delete/batch';
                var postData = {code: ids,arrival_code:arrival_codes};
                yjsloading.ajaxConfirm(title, msg, deleteUrl, postData, function (result) {
                });
            }
        },

        // 删除（单条）
        deleteData: function (obj) {
            var title = '生活用品信息维护';
            var msg = '您确定执行本次数据删除操作吗？';
            var deleteUrl = '/dailyuse/delete';
            var postData = {code: obj.data.code,arrival_code: obj.data.arrival_code};
            yjsloading.ajaxConfirm(title, msg, deleteUrl, postData, function (result) {
            });
        },

        // 查看
        viewData: function (obj) {
            var viewUrl = '/dailyuse/item?view=' + obj.event + '&code=' + obj.data.code+'&arrival_code='+obj.data.arrival_code;
            layer.open({
                type: 2
                , id: obj.event + obj.data.code // 只允许弹出一个
                , title: '查看生活用品信息'
                , area: ['500px', '400px']
                , shade: 0
                , maxmin: true
                , content: viewUrl
                , btn: ['确认', '取消']
                , zIndex: layer.zIndex // 当前窗体层叠顺序(layui自动维护)
                , success: function (layero, index) { // 弹出成功回调
                    // 置顶当前窗体
                    layer.setTop(layero);
                }
                , yes: function (index, layero) { // 确定按钮回调
                    layer.close(index);
                }
                , btn2: function (index, layero) { // 取消按钮回调
                    layer.close(index);
                }
                , cancel: function (index, layero) { // 关闭窗体成功回调
                    layer.close(index);
                }
            })
        },
        setDailyUseSexLimit: function (obj) {
            var editUrl = '/dailyuse/item?view=' + obj.event +'&code='+obj.data.code +'&arrival_code='+obj.data.arrival_code;
            console.log(editUrl);
            layer.open({
                type: 2
                , id: obj.event+obj.data.code // 只允许弹出一个
                , title: '编辑性别'
                , area: ['500px', '400px']
                , shade: 0
                , maxmin: true
                , content: editUrl
                , btn: ['确认', '取消']
                , zIndex: layer.zIndex // 当前窗体层叠顺序(layui自动维护)
                , success: function (layero, index) { // 弹出成功回调
                    // 置顶当前窗体
                    layer.setTop(layero);
                }
                , yes: function (index, layero) { // 确定按钮回调
                    // 获取当前索引iframe页<form>元素对象
                    var form = layer.getChildFrame('[name="sexForm"]', index);
                    // 获取当前form下隐藏submit按钮对象
                    var btnHidden = form.find('#toolbarSubmit')[0];
                    // 向服务端post新增数据
                    btnHidden.click();
                }
                , btn2: function (index, layero) { // 取消按钮回调
                    $title = '编辑校服性别限制';
                    $msg = '您确定取消本次数据编辑操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , cancel: function (index, layero) { // 关闭窗体成功回调
                    $title = '编辑校服性别限制';
                    $msg = '您确定取消本次数据编辑操作吗？';
                    yjsloading.popupCancelConfirm($title, $msg, index);
                    return false;
                }
                , end: function () {
                    // 表格刷新
                    tbObj.reload();
                }
            });
        }
    };

    /**
     * 监听select
     */
    form.on('select(arrival_code)',function (data) {
        // 获取关键字
        tbObj.reload({
            where: {arrival_code: data.value,from_select:true}
        });
    });

    // 监听按钮点击事件 (非工具条)
    $('.layui-btn').on('click', function () {
        var type = $(this).data('type');
        eventHandle[type] ? eventHandle[type].call(this, type) : '';
    });

    // 可编辑单元格改变事件
    table.on('edit(dailyUseList)', function (obj) {
        $url = '/dailyuse/update/cell';
        $data = {
            code: obj.data.code,
            arrival_code: obj.data.arrival_code,
            attrs: [obj.field],
            values: [obj.value]
        };
        yjsloading.ajaxAutoSubmit($url, $data,function (result) {

        });
    });

    // 监听工具条按钮点击事件
    table.on('tool(dailyUseList)', function (obj) {
        // 获得当前行lay-event对应的值
        var itemEvent = obj.event;
        eventHandle[itemEvent] ? eventHandle[itemEvent].call(this, obj) : '';
    });


});